Before Trigger এবং After Trigger হলো Apex Trigger-এর দুটি প্রধান টাইমিং, যা Salesforce ডেটাবেজে ইভেন্টের উপর নির্ভর করে বিভিন্ন কাজ সম্পন্ন করতে ব্যবহৃত হয়। Before Trigger
ডেটা সেভ হওয়ার আগে কার্যকর হয়, এবং After Trigger
ডেটা সেভ হওয়ার পর কার্যকর হয়। এই দুটি টাইমিং বিভিন্ন প্রয়োজন অনুযায়ী ব্যবহার করা হয়।
Before Trigger সাধারণত ডেটা সেভ হওয়ার আগে ডেটা ভ্যালিডেশন বা ডেটা প্রসেসিংয়ের জন্য ব্যবহৃত হয়। এই Trigger-এ ডেটা সরাসরি পরিবর্তন বা মডিফাই করা যায়, কারণ ডেটা এখনও ডেটাবেজে সেভ হয়নি। Before Trigger-এ ডেটার মান পরিবর্তন করা হলে সেই পরিবর্তিত মান ডেটাবেজে সেভ হবে।
ধরুন, আমরা একটি Trigger তৈরি করতে চাই, যা নতুন Account
রেকর্ড ইনসার্ট করার আগে Industry
ফিল্ড চেক করবে এবং সেটি খালি থাকলে Technology
মান দিয়ে পূরণ করবে।
trigger SetDefaultIndustry on Account (before insert) {
for (Account acc : Trigger.new) {
if (acc.Industry == null) {
acc.Industry = 'Technology';
}
}
}
এখানে SetDefaultIndustry
Trigger before insert
ইভেন্টে কাজ করবে। যদি Industry
ফিল্ড খালি থাকে, তাহলে এটি Technology
মান সেট করবে এবং তারপর রেকর্ডটি ডেটাবেজে সেভ হবে।
ধরুন, আমরা একটি Trigger তৈরি করতে চাই, যা Account
রেকর্ড আপডেট করার আগে AnnualRevenue
ফিল্ড চেক করবে এবং সেটি যদি 0
হয়, তাহলে একটি নির্দিষ্ট মান দিয়ে সেট করবে।
trigger CheckAnnualRevenue on Account (before update) {
for (Account acc : Trigger.new) {
if (acc.AnnualRevenue == 0) {
acc.AnnualRevenue = 50000; // Default value
}
}
}
এখানে CheckAnnualRevenue
Trigger before update
ইভেন্টে কাজ করবে এবং AnnualRevenue
ফিল্ড যদি শূন্য থাকে, তাহলে এটি ডিফল্ট মান 50000
দিয়ে পূরণ করবে।
After Trigger সাধারণত ডেটা সেভ হওয়ার পর কার্যকর হয় এবং এটি অন্য অবজেক্টের উপর নির্ভরশীল কার্যক্রম সম্পন্ন করতে ব্যবহৃত হয়। After Trigger-এ মূল ডেটা পরিবর্তন করা সম্ভব নয়, কারণ ডেটা ইতিমধ্যে ডেটাবেজে সেভ হয়ে গেছে। After Trigger-এ সাধারণত লজিকাল কাজ, যেমন- সম্পর্কিত রেকর্ড তৈরি, ইমেইল পাঠানো, বা লজ ব্যবহার করা হয়।
ধরুন, আমরা একটি Trigger তৈরি করতে চাই, যা নতুন Account
রেকর্ড তৈরি হওয়ার পর স্বয়ংক্রিয়ভাবে একটি Contact
রেকর্ড তৈরি করবে, যেখানে Account
এর নাম সেট করা থাকবে।
trigger CreateContactAfterAccount on Account (after insert) {
List<Contact> contacts = new List<Contact>();
for (Account acc : Trigger.new) {
Contact con = new Contact(
LastName = acc.Name,
AccountId = acc.Id
);
contacts.add(con);
}
insert contacts;
}
এখানে CreateContactAfterAccount
Trigger after insert
ইভেন্টে কাজ করবে এবং প্রতিটি নতুন Account
রেকর্ড তৈরি হওয়ার পর স্বয়ংক্রিয়ভাবে একটি Contact
রেকর্ড তৈরি করবে।
ধরুন, আমরা একটি Trigger তৈরি করতে চাই, যা Opportunity
রেকর্ড আপডেট হওয়ার পর Account
রেকর্ডের Last Activity Date
ফিল্ড আপডেট করবে।
trigger UpdateAccountActivity on Opportunity (after update) {
List<Account> accounts = new List<Account>();
for (Opportunity opp : Trigger.new) {
Account acc = new Account(
Id = opp.AccountId,
LastActivityDate = Date.today()
);
accounts.add(acc);
}
update accounts;
}
এখানে UpdateAccountActivity
Trigger after update
ইভেন্টে কাজ করবে এবং Opportunity
আপডেট হওয়ার পর সম্পর্কিত Account
রেকর্ডের Last Activity Date
আপডেট করবে।
বৈশিষ্ট্য | Before Trigger | After Trigger |
---|---|---|
কার্যক্রমের সময় | ডেটা সেভ হওয়ার আগে কার্যকর হয় | ডেটা সেভ হওয়ার পর কার্যকর হয় |
প্রক্রিয়া | ডেটা পরিবর্তন বা ভ্যালিডেশন করতে ব্যবহৃত হয় | অন্যান্য অবজেক্টের উপর নির্ভরশীল কাজ, যেমন সম্পর্কিত রেকর্ড তৈরি, ইমেইল পাঠানো |
মূল ডেটা পরিবর্তন | হ্যাঁ, মূল ডেটা পরিবর্তন করা যায় | না, মূল ডেটা পরিবর্তন করা যায় না |
ব্যবহার | ডেটা ভ্যালিডেশন, ডিফল্ট মান সেট, ইত্যাদি | সম্পর্কিত রেকর্ড তৈরি, ইমেইল পাঠানো, অডিটিং ইত্যাদি |
Before এবং After Trigger ব্যবহার করে Salesforce ডেটাবেজের ইভেন্ট-চালিত কার্যক্রম সহজ এবং স্বয়ংক্রিয় করা যায়, যা বিভিন্ন ব্যবসায়িক নিয়ম এবং প্রক্রিয়াকে কার্যকর করে।
common.read_more